<?php
/**
 * Custom controller for particular project
 */
class CustomController extends Controller
{

    public $user;
    private $title = false;

    public function __construct()
    {
        parent::__construct();
        $this->user = new User();
        $this->user->logFromSession();
    }

    public function setTitle($pageTitle)
    {
        $this->title = $pageTitle;
    }

    public function getHeaderVars()
    {
        if ($this->user->isAdmin())
        {
            $rol = $this->model->getRolByUser($this->user->getId());
            $userType = " - ADMINISTRADOR ($rol)";
        }
        else
        {
            $userType = ($this->user->isMaster()?' - MASTER':($this->user->isMaster()?' - SEGURIDAD':''));
        }
        return array(
            'register_action'        => $this->link(MODULE_REGISTER),
            'logout_action'          => $this->link(MODULE_LOGIN, MODULE_LOGIN_ACTION_LOGOUT),
            'login_action'           => $this->link(MODULE_LOGIN),
            'is_logged_in'           => $this->user->isLoggedIn(),
            'is_admin'               => $this->user->isAdmin(),
            'menu_class'             => ($this->user->isAdmin() || $this->user->isMaster() || $this->user->isSecurity()?'menu_admin':'menu_normal'),
            'header_type_class'      => ($this->user->isAdmin() || $this->user->isMaster() || $this->user->isSecurity()?'hidden_header':'normal_header'),
            'user_data'              => $this->user->getUserData(),
            'title'                  => ($this->title)?$this->title:$this->conf['general']['page_title'],
            'password_forgot_action' => $this->link(MODULE_RECUPERAR_PASSWORD),
            'user_type'              => $userType,
            // Links Menu Admin
            'permisos'                       => $this->permisosMenu(),
            'link_nuevo_recorrido'           => $this->link(MODULE_MAPA, MODULE_MAPA_CREAR_RECORRIDO),
            'link_listar_recorridos'         => $this->link(MODULE_MAPA, MODULE_MAPA_LISTAR_RECORRIDOS),
            'link_nuevo_conductor'           => $this->link(MODULE_CONDUCTORES, MODULE_CONDUCTORES_CREAR_CONDUCTOR),
            'link_listar_conductores'        => $this->link(MODULE_CONDUCTORES, MODULE_CONDUCTORES_LISTAR_CONDUCTOR),
            'link_nueva_franja'              => $this->link(MODULE_FRANJAS, MODULE_FRANJAS_CREAR_FRANJA),
            'link_listar_franjas'            => $this->link(MODULE_FRANJAS, MODULE_FRANJAS_LISTAR_FRANJAS),
            'link_nuevo_vehiculo'            => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_CREAR_VEHICULO),
            'link_listar_vehiculos'          => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_LISTAR_VEHICULOS),
            'link_nuevo_grupo'               => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_CREAR_GRUPO),
            'link_listar_grupos'             => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_LISTAR_GRUPOS),
            'link_crear_viaje'               => $this->link(MODULE_VIAJES, MODULE_VIAJES_CREAR_VIAJE),
            'link_programar_viajes'          => $this->link(MODULE_VIAJES, MODULE_VIAJES_PROGRAMAR_VIAJES),
            'link_listar_viajes'             => $this->link(MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES),
            'link_listar_viajes_activos'     => $this->link(MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES_ACTIVOS),
            'link_listar_viajes_finalizados' => $this->link(MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES_FINALIZADOS),
            'link_listar_grupos_activos'     => $this->link(MODULE_MONITOREO, MODULE_MONITOREO_LISTAR_GRUPOS),
            'link_historial_general'         => $this->link(MODULE_ALERTAS, MODULE_ALERTAS_GENERALES),
            'link_historial_vehiculo'        => $this->link(MODULE_ALERTAS, MODULE_ALERTAS_VEHICULO),
            'link_historial_grupo'           => $this->link(MODULE_ALERTAS, MODULE_ALERTAS_GRUPO),
            'link_listar_usuarios_finales'   => $this->link(MODULE_USUARIOS_FINALES, MODULE_USUARIOS_FINALES_LISTAR),
            // Links Menu master
            'link_nuevo_usuario'   => $this->link(MODULE_USUARIOS, MODULE_USUARIOS_CREAR_USUARIO),
            'link_listar_usuarios' => $this->link(MODULE_USUARIOS, MODULE_USUARIOS_LISTAR_USUARIOS),
            // Links Menu Seguridad
            'link_nuevo_rol'         => $this->link(MODULE_ROLES, MODULE_ROLES_CREAR_ROL),
            'link_listar_roles'      => $this->link(MODULE_ROLES, MODULE_ROLES_LISTAR_ROLES),
            'link_roles_por_usuario' => $this->link(MODULE_ROLES, MODULE_ROLES_POR_USUARIO),
            'link_listar_acciones'   => $this->link(MODULE_ACCIONES, MODULE_ACCIONES_LISTAR_ACCIONES),
            'link_acciones_rol'      => $this->link(MODULE_ROLES, MODULE_ROLES_LISTAR_ROLES),
            'link_acciones_usuario'  => $this->link(MODULE_ROLES, MODULE_ROLES_POR_USUARIO),
        );
    }

    // Redefinir isAdmin porque los usuarios de tipo ADMIN tambien tienen que validar los roles/acciones
    public function isAdmin($onlyDie = false)
    {
        parent::isAdmin($onlyDie);
        $accionesModel = new AccionesModel();
        $modulo = $this->modules->getCurrentModule();
        $accion = $this->modules->getCurrentAction();
        if ($accionesModel->accionPermitida($this->user->getId(), $modulo, $accion))
        {
            return true;
        }
        else
        {
            $this->notice("Usted no tiene permiso para realizar esta accion");
            $this->redirectTo(MODULE_HOME);
        }
    }

    // Obtener listado de permisos del menu
    public function permisosMenu()
    {
        $accionesModel = new AccionesModel();
        $permisos = array(
            'nuevoConductor'          => $accionesModel->accionPermitida($this->user->getId(), MODULE_CONDUCTORES, MODULE_CONDUCTORES_CREAR_CONDUCTOR),
            'verConductores'          => $accionesModel->accionPermitida($this->user->getId(), MODULE_CONDUCTORES, MODULE_CONDUCTORES_LISTAR_CONDUCTOR),
            'nuevoVehiculo'           => $accionesModel->accionPermitida($this->user->getId(), MODULE_VEHICULOS, MODULE_VEHICULOS_CREAR_VEHICULO),
            'verVehiculos'            => $accionesModel->accionPermitida($this->user->getId(), MODULE_VEHICULOS, MODULE_VEHICULOS_LISTAR_VEHICULOS),
            'nuevoGrupo'              => $accionesModel->accionPermitida($this->user->getId(), MODULE_GRUPOS, MODULE_GRUPOS_CREAR_GRUPO),
            'verGrupos'               => $accionesModel->accionPermitida($this->user->getId(), MODULE_GRUPOS, MODULE_GRUPOS_LISTAR_GRUPOS),
            'nuevaFranja'             => $accionesModel->accionPermitida($this->user->getId(), MODULE_FRANJAS, MODULE_FRANJAS_CREAR_FRANJA),
            'verFranjas'              => $accionesModel->accionPermitida($this->user->getId(), MODULE_FRANJAS, MODULE_FRANJAS_LISTAR_FRANJAS),
            'nuevaRuta'               => $accionesModel->accionPermitida($this->user->getId(), MODULE_MAPA, MODULE_MAPA_CREAR_RECORRIDO),
            'listarRutas'             => $accionesModel->accionPermitida($this->user->getId(), MODULE_MAPA, MODULE_MAPA_LISTAR_RECORRIDOS),
            'crearViaje'              => $accionesModel->accionPermitida($this->user->getId(), MODULE_VIAJES, MODULE_VIAJES_CREAR_VIAJE),
            'programarViajes'         => $accionesModel->accionPermitida($this->user->getId(), MODULE_VIAJES, MODULE_VIAJES_PROGRAMAR_VIAJES),
            'listarViajes'            => $accionesModel->accionPermitida($this->user->getId(), MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES),
            'listarViajesActivos'     => $accionesModel->accionPermitida($this->user->getId(), MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES_ACTIVOS),
            'listarViajesFinalizados' => $accionesModel->accionPermitida($this->user->getId(), MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES_FINALIZADOS),
            'gruposActivos'           => $accionesModel->accionPermitida($this->user->getId(), MODULE_MONITOREO, MODULE_MONITOREO_LISTAR_GRUPOS),
            'historialVehiculo'       => $accionesModel->accionPermitida($this->user->getId(), MODULE_ALERTAS, MODULE_ALERTAS_VEHICULO),
            'historialGrupo'          => $accionesModel->accionPermitida($this->user->getId(), MODULE_ALERTAS, MODULE_ALERTAS_GRUPO),
            'historialGeneral'        => $accionesModel->accionPermitida($this->user->getId(), MODULE_ALERTAS, MODULE_ALERTAS_GENERALES),
            'listarUsuariosFinales'   => $accionesModel->accionPermitida($this->user->getId(), MODULE_USUARIOS_FINALES, MODULE_USUARIOS_FINALES_LISTAR),
        );
        return $permisos;
    }

}

?>